venerdì, settembre 13, 2019

Lettore per firma digitale non funzionante

I dispositivi per la firma digitale possono essere di diversi tipi:
1. lettori di carte con chip (smart card reader)
2. lettori di sim
3. dispositivi di firma remota.

Per i device fisici (1) e (2) possono presentarsi problemi di installazione dei driver (in Italia forniti principalmente da Bit4id). In particolare, può presentarsi l'eventualità che il driver del lettore venga addirittura sostituito da uno non corretto a seguito di aggiornamenti di sistema o installazione di altre periferiche o software.
Nell'esempio che riporto, il lettore di smart card che possiedo si trova a (non) funzionare su un set di driver diversi da quelli originali, come nello screenshot sotto.
Questi driver disturbano il funzionamento del lettore, impedendo tutte le operazion di firma digitale di documenti con qualsiasi software di firma. La periferica infatti non è riconosciuta dal software, che segnala l'assenza del dispositivo di firma.
In tale situazione, basta accedere a Gestione Dispositivi di Windows, espandere la voce "Lettori di smart card", cliccare col tasto destro sopra il lettore (spesso identificato con la voce "USB Smart Card Reader") e selezionare Disinstalla. Nella finestra di dialogo che appare, spuntare la voce "Elimina il software driver".
Terminata la disinstallazione, staccare e riattaccare il lettore dalla presa USB. Si reinstallerà correttamente se i driver orginali sono presenti nel sistema (a seguito ad esempio, della prima installazione del lettore).

sabato, maggio 20, 2017

Downgrade di Windows 10 da Enterprise a Pro e Home

Per effettuare il downgrade di Windows 10 dalla versione Enterprise o Pro all'edizione Pro o Home rispettivamente, seguire i seguenti passi:
  1. Da Impostazioni/Attivazione cliccare su  Cambia Product Key e immettere il codice generico per Win 10 Pro insider preview VK7JG-NPHTM-C97JM-9MPGT-3V66T. Seguire la procedura. Se voleve fermarvi a Win 10 Pro fermatevi qui.
  2. Win+R, scrivere regedit.exe e dare invio
  3. alla chiave HKLM\Software\Microsoft\Windows NT\CurrentVersion cambiare il valore ProductName in "Windows 10 Home" e la chiave EditionID con il valore "Core" (sempre senza virgolette!)
  4. alla chiave HKLM\Software\Wow6432Node\Microsoft\Wind­ows NT\CurrentVersion cambiare il valore ProductName in "Windows 10 Home" e la chiave EditionID con il valore "Core"
  5. chiudere regedit.exe e scaricare il Media Creation Tool da qui 
  6. Creare una ISO di installazione (chiavetta o ISO), poi avviare setup.exe e scegliere la versione di Windows desiderata.

sabato, gennaio 09, 2016

Cancellare elementi disattivati da MsConfig

Per cancellare gli elementi di avvio disattivati da msconfig.exe in Windows 7 e inferiori, accedere alla chiave di registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig e cancellare le voci sotto “startupreg” e “startupfolder”.

domenica, agosto 24, 2014

Windows Form all'interno di DLL con VB.NET

Può risultare utile avere dei form all'interno di una libreria DLL per poterli utilizzare in applicazioni diverse. A differenza delle Application però, le ClassLibrary non istanziano automaticamente i form al loro interno, e per far comunicare i form presenti nella libreria è necessario aggiungere una variabile, che qui chiamo myCaller, all'interno del form chiamato (addSection nell'esempio) che identifica il form chiamante (sectionsSelection).
Public Class addSection
    Public myCaller As sectionsSelection ' nome del form chiamante
Prima di chiamare il form è necessario istanziarlo e assegnare il chiamante:
Dim addsection As New addSection
addsection.myCaller = Me
addsection.ShowDialog()
In tal modo diventa semplice compiare i form creati in applicazioni all'interno delle librerie DLL. Quando il form addSection chiama metodi, controlli o variabili di sectionsSelection, basta usare myCaller oppure:
Dim sectionsSelection As sectionsSelection = myCaller
e il gioco è fatto.

venerdì, agosto 22, 2014

App in Android, usare le "generiche" per risparmiare spazio

Per i sistemi Android si trova una moltitudine di app per tutti i gusti, anche per le operazioni essenziali come mail e accesso ai cloud. Se avete un account Gmail trovare già preinstallata la app omonima che funge da client Imap. Peccato che malgrado aggiornamenti continui, sia un'app veramente lenta e inaffidabile nel refresh dei messaggi. Se poi usate Dropbox, Google Drive o OneDrive, per ognuno c'è l'app proprietaria. Per evitare tutto questo, ecco due consigli rapidi: utilizzate sempre il client di mail preinstallato nel telefono oppure AquaMail, entrambe si configurano automaticamente con i provider più comuni. Per l'accesso al cloud ti consiglio invece ES File Explorer, che funge anche da file manager e da interfaccia per la condivisione e copia di file via lan.

giovedì, agosto 21, 2014

Indispensabili per Windows

Benché Windows sia uno dei sistemi operativi più completi in commercio, per l'utente medio si rendono indispensabili altri 'accessori' rispetto a quelli forniti nel sistema (blocco note, paint, ecc.).
Ecco la lista di freeware indispensabili:
- rScite è un editor testuale davvero completo. Il primo vantaggio è poter leggere i file con codifica Unix e quindi vedere i corretti ritorni a capo che invece notepad visualizzerebbe male. Altra caratteristica fondamentale è la selezione per colonna, tenendo premuto Alt.
- WinMerge è un tool davvero utile per confrontare file di testo: facile e intuitivo, si avvia anche dal menu contestuale di Explorer una volta selezionati 2 file. Come il programma precedente, supporta codifiche non Windows ed è molto più semplice da utilizzare di Vim o simili.
- 7zip è una scelta obbligata per poter aprire tutti i file compressi. Preferisco WinRar anche se quest'ultimo è a pagamento.
- Paint.Net è il replacement ideale per Paint, supporta tutti i formati più comuni e ha comandi di editing indispensabili anche per l'utente base. Supporta una marea di plug-in per aggiungere di tutto e di più (effetti, filtri, comandi, ecc.).
- per chi ha necessità di collegarsi e scambiare file con macchine Unix consiglio putty per la connessione via console e WinSCP per il trasferimento di file via SSH. Per chi volesse invece connettersi a Unix con una sessione grafica consiglio XMing, altrimenti non resta che installare il classico CygWinX per esigenze più complicate.

sabato, dicembre 14, 2013

Selezionare le cartelle da salvare nel cloud

La recente notizia che riguarda Sugarsync ha di sicuro provocato qualche problema ai più: il servizio diventa inspiegabilmente a pagamento dall'8 febbraio 2014. Inspiegabile perchè l'azienda è in attivo e non avrebbe apparente bisogno di risanare le casse, e perchè la scommessa che gli utenti la seguano (pagando) è davvero forte, a fronte dei tanti concorrenti gratuiti.
Uno dei tanti pregi di Sugarsync è sicuramente la possibilità di selezionare le cartelle da caricare sul cloud, lasciandole al loro posto. Cosa banale ma affatto ovvia per i concorrenti: Sugarsync è l'unico a disporre di questa caratteristica. Nel seguito vi presento una soluzione per poter fare la stessa cosa con gli altri fornitori di spazio gratuito in cloud, quali (nell'ordine nel quale li consiglio) Dropbox, Google Drive e Skydrive.
E' possibile infatti chiedere ai suddetti servizi di caricare la cartella desiderata, senza che sia fisicamente nella directory dedicata ("cartella Dropbox", che in genere si posiziona in C:\Users\nomeUtente\Dropbox). Questo è possibile grazie agli Hard link di Windows, fruibili, una volta posizionati nella cartella dedicata del cloud, con il comando:

mklink /J Nome Destinazione

Questo comando crea un Junction (giunzione) con la cartella specificata in Destinazione. La giunzione viene effettuata con il Nome desiderato (che vi consiglio sia il nome della cartella di Destinazione). Per emulare il comportamento di Sugarsync basta infine creare uno script in C:\windows che esegua il comando, e aggiungere al click destro su cartelle la chiamata a tale script.
Attenzione: nelle recenti versioni di Windows, il comando mklink non è un eseguibile, come trovate erroneamente riportato in alcune pagine Web, ma è un comando intrinseco della shell di Windows. Negli script va quindi richiamato come cmd /c mklink /J Nome Destinazione.
Ci sono molti software gratuiti che consentono di fare quanto descritto senza utilizzare il prompt dei comandi. Nonostante questo, nessuno di questi risolve il problema di Dropbox è la mancata sincronizzazione dei nuovi file o cartelle creati nelle cartelle originali linkate. Ho verificato infatti che, come dichiarato nel sito di Dropbox, il programma non si accorge dell'aggiunta di file o cartelle all interno delle junction fino al suo riavvio.

sabato, settembre 08, 2012

Cluster part 2 - tips and tricks

Alcune precisazioni e consigli per quanto riguarda l'articolo precedente:
  1. le versioni di Windows Professional e Home (non i Server) hanno il limite degli accessi simultanei per cartella impostato a 10 (o 20 nelle ultime versioni) per limitare la diffusione di worm. In molti casi quindi si rende necessaria una cartella condivisa in un server che ospiti gli eseguibili e i dati che ogni macchina deve leggere. Tenete presente che il server può essere anche un WinServer Hyper-V o un Samba (att.ne però ai tempi di accesso).
    Gli errori che si ottengono nel lanciare in parallelo da cartelle condivise in pc WinPro o Home sono criptici, e non danno idea del problema di accesso; in genere le librerie MPICH comunicano all'utente che "non è possibile settare la cartella di lavoro" o "la destinazione è inaccessbile".
  2. è opportuno montare la stessa versione di MPICH2 in ogni macchina per evitare incompatibilità e errori indecifrabili.
  3. è possibile (io l'ho realizzato) montare un cluster Linux virtualizzato sopra quello Windows, utilizzando Virtual Server 2005 R2 in ogni macchina (previa installazione di IIS) e Debian (network distro). Per il controllo remoto delle macchine ho utilizzato VsPlus, gratuito.

mercoledì, febbraio 22, 2012

Costruzione di cluster MPICH2 per .NET

Costruire un cluster con i computer che vanno dismessi è sicuramente un'alternativa conveniente, perlomeno per chi sa cosa farsene. Il calcolo parallelo è una realtà diffusa in molti ambiti, dalle implementazioni cloud al calcolo scientifico. Per quest'ultimo è particolarmente conveniente utilizzare un cluster quando si abbiano a disposizione dei programmi "paralleli", cioè, in soldoni, che usino le librerie MPICH2 (tralasciamo la versione 1 di tali librerie perchè non rappresenta più lo standard de facto, anche se aveva il pregio di funzionare in cluster eterogenei).
In questo articolo vorrei presentare, senza la pretesa di essere un informatico professionale, la realizzazione di un cluster a partire da 13 PC P4 1.5GB con Windows XP SP3. L'obiettivo è quello di mettere in grado il cluster di far girare codice parallelo scritto utilizzando i linguaggi VB.NET e C# oltre che i classici programmi in Fortran, C e C++. Verrà brevemente riportata nel seguito la metodologia utilizzata per selezionare gli strumenti di partenza, per configurarli e per testarli.

Strumenti necessari
E' necessario procurarsi dapprima le librerie MPICH2 scaricabili da qui (Argonne). Per esigenze di compatibilità con i programmi da utilizzare (nel mio caso, OpenseesMP) viene adottata la versione 1.3.1 scaricabile da qui in versione a 32bit. A mio personalissimo avviso è meglio limitare programmi paralleli fatti in casa e di conseguenza le librerie di supporto alle versioni x86, vista la grande documentazione ed esperienza a riguardo che si può trovare in rete.
La seconda esigenza di poter utilizzare programmi in VB.NET o C# ci mette di fronte a 2 scelte: o si adotta l'infrastruttura pronta di Microsoft (Windows HPC Server 2008, che è a 64bit) oppure si usa l'implementazione dell'Università dell'Indiana chiamata MPI.NET. Si decide di optare per la seconda possibilità causa la mancanza di hardware adatto per il server Microsoft. E' comunque necessario scaricare le librerie di runtine MPI di Ms, disponibili qui (l'ultima versione, qualsiasi altra precedente andava bene).
Finalmente, nell'ordine vengono installati in ogni macchina:
- librerie MPICH2 dell'Argonne (mpich2-1.3.1-win-ia32.msi);
- librerie Microsoft HPC Pack 2008 R2, versione 32bit nel cluster e 64bit nel mio portatile per lo sviluppo (l'installazione sui sistemi a 64bit è bloccata per il pacchetto di librerie a 32bit; in ogni caso nel sistema Microsoft di possono far girare insieme) (mpi_x86.msi);
- librerie MPI.NET per il runtime (MPI.NET Runtime.msi).

Configurazione
Facciamo altri pochi step per settare il cluster: 
1 - per ogni macchina è consigliabile disattivare il firewall di Windows o, se questo non è possibile per qualsivoglia motivo, aprire tutte le porte necessarie per la comunicazione, che sono:
   - porta TCP 8676 per il servizio in ascolto Argonne + una serie di porte per lo scambio dati settabili dall'utente tramite la variabile d'ambiente MPICH_PORT_RANGE da aggiungere nel sistema.
   - porta TCP 8677 per il servizio in ascolto Microsoft MPI.
2 - settare lo stesso utente amministrativo in tutte le macchine. Se siete in un dominio l'operazione è facile, se non esiste il dominio la migliore alternativa è quella di utilizzare il meccanismo di trusting di Windows, cioè semplicemente usare stesso nome utente e password per l'account amministrativo in tutti i PC.
3 - per le MPICH2 dell'Argonne è necessario registrare l'utente amministrativo locale (come abbbiamo detto, lo stesso per tutto il cluster) tramite il programma wmpiregister disponibile nel menu Start dopo l'installazione, oppure fare il tutto tramite la riga di comando:

mpiexec -register user

dove user  è il nome utente sopracitato.
3 - indipendentemente dal firewall, è necessario avviare manualmente il servizio smpd.exe contenuto nella cartella di installazione del pacchetto Microsoft usato prima (tipicamente C:\Program Files\Microsoft HPC Pack 2008 R2\Bin). Va avviato con l'opzione "-d" per indicare che lo avviamo in debug mode. Per automatizzare il tutto si rimanda ai miei programmi disponibili su giovanni.rinaldin.org . Attenzione che il servizio va avviato con le credenziali dell'utente amministratico comune di cui in precendenza. Il servizio occupa solo la porta 8677 come detto.
4 - nella cartella C:\Program Files\Microsoft HPC Pack 2008 R2\Bin, rinominare il programma mpiexec.exe in mpiexecms.exe. Inoltre aggiungere nel PATH di sistema la cartella C:\Program Files (x86)\MPICH2\bin.

Infine, si consiglia di mettere tutte le macchine in una sottorete privata diversa ma accessibile da altre reti per il lancio dei job e la copia dei risultati, ma l'argomento rete, qui, è secondario (perché per le vere prestazioni è necessario utilizzare una rete InfiniBand o Gigabit Ethernet).
Le macchine (d'ora in poi chiamate "nodi") sono ora pronte per entrare nel cluster.

Testing
Saranno testate le due librerie (Argonne e Microsoft) per verificare il corretto funzionamento. Il test è di fondamentale importanza per individuare possibili problemi nel trasporto di dati via rete, come la mancata risoluzione degli indirizzi, porte bloccate da firewall e così via.
Per testare le librerie Argonne è possibile compilare uno degli esempi forniti a corredo con il pacchetto installato. Gli esempi si trovano in C:\Program Files (x86)\MPICH2\examples o simili. Il comando di lancio è:

mpiexec -np N -machinefile mfile.txt \\nomecomputer\condivisa\cpi.exe

dove N è il numero di macchine interessate, mfile.txt è un file plain text contenente i nomi delle macchine (uno per riga - questo secondo me è il metodo più comodo, vedere anche l'opzione -hosts), "condivisa" è una cartella condivisa che tutte le macchine possono vedere, infine cpi.exe è l'esempio di calcolo del pi greco via integrazione fornito nelle librerie. Se tutto va a buon fine il lancio non visualizza errori e il programma richiede un numero di intervalli di integrazione. Tanto è più alto, tanto il pi greco sarà preciso.

Passiamo ora al test delle librerie Microsoft. Possiamo utilizzare il programma PingPong.exe fornito con gli esempi nell'SDK del pacchetto MPI.NET, in modo da testare la corretta installazione anche di questo.
E' necessario, se non si è loggati in Windows con lo stesso account amministratore con cui vengono eseguiti i job in rete, eseguite il comando "runas" nella shell prima di lanciare il lavoro. Il comando di lancio è il seguente:

mpiexecms -np N -machinefile mfile.txt -dir \\nomecomputer\condivisa \\nomecomputer\condivisa\PingPong.exe

dove i nomi sono quelli adottati nell'esempio precedente, con l'aggiunta del flag -dir che specifica la directory di lavoro. Tale flag è necessario perchè se non ci fosse le librerie Microsoft cercano la cartella locale dove sta l'eseguibile in tutti i PC, e questa potrebbe non esistere. Se questo test va a buon fine, compariranno una serie di messaggi contenenti i nomi di ogni macchina coinvolta.

Conclusioni
Si è mostrato come costruire un cluster con le librerie Argonne e Microsoft HPC senza utilizzare il Windows Server. Tale configurazione non garantisce prestazioni elevate e un controllo stretto dei job lanciati, ma è molto utile in ambiente di sviluppo e ricerca. Infine, molti altri programmi (ad es. OpenSeesMP, ABAQUS, ecc.) di appoggiano a tali librerie per eseguire lavori in parallelo.

sabato, novembre 19, 2011

Copia di Windows XP mode in Vmware Player

Se copiate la macchina virtuale Windows XP mode in Vmware player ad un altro pc, ricordatevi di spostare anche il file VHD (disco di Windows Virtual PC) insieme ai file Vmware.
Per unire i 2 file del disco, basterà utilizzare VmWare converter, e otterrete un unico file vmdk.